﻿/* Config validation */
ko.validation.configure({
    registerExtenders: true,
    messagesOnModified: true,
    insertMessages: true,
    parseInputAttributes: true,
    messageTemplate: null,
    decorateElement: true,
    errorClass: "error",
    errorMessageClass: "error-desc"
});

var mustEqual = function (val, other) {
    return val == other();
};

var viewModel = new function () {
    // About you
    this.Fullname = ko.observable('').extend({ maxLength: 50 }).extend({ required: { message: "Tên người dùng là bắt buộc"} });

    this.Email = ko.observable('').extend({ required: { message: 'Địa chỉ e-mail là bắt buộc'} }).extend({ pattern: {
        message: "Nhập địa chỉ e-mail hợp lệ",
        params: /^(([a-zA-Z0-9])+([a-zA-Z0-9_\.\-])+([a-zA-Z0-9]))+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/
    }
    });
    this.Password = ko.observable().extend({ minLength: 6, maxLength: 20, required: { message: "Mật khẩu là bắt buộc"} }).extend({ pattern: {
        message: 'Mật khẩu không chứa ký tự đặc biệt',
        params: '^\s*([0-9a-zA-Z]+)\s*$'
    }
    });
    this.ConfirmPassword = ko.observable("").extend({ pattern: {
        message: 'Mật khẩu không chứa ký tự đặc biệt',
        params: '^\s*([0-9a-zA-Z]+)\s*$'
    }
    });

    // Submit, Next button
    this.validateForm = ko.observable(false);
    this.acceptTermsAndCondition = ko.observable(false);
    this.SubmitForm = function () {
        if (viewModel.errors().length == 0) {
            $('form').submit();
        }
        else {
            if (this.acceptTermsAndCondition()) {
                this.validateForm(viewModel.errors().length > 0);
                viewModel.errors.showAllMessages();
                return false;
            }
            else {
                this.validateForm(viewModel.errors().length > 0);
                return false;
            }
        }
    }
};

viewModel.ConfirmPassword = ko.observable().extend({
    validation: { validator: mustEqual, message: 'Trường mật khẩu không đúng.', params: viewModel.Password }
}),
viewModel.errors = ko.validation.group(viewModel);

// Apply
ko.applyBindings(viewModel, document.getElementById("main"));